![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@rocicorp/logger
Advanced tools
Provides a simple logging interface as well as a LogContext
class which
carries a context around.
npm install @rocicorp/logger
LogContext
includes a context that gets included in the log message.
import {LogContext} from '@rocicorp/logger';
const lc = new LogContext('info');
lc.info('hello'); // prints "hello"
const lc2 = new LogContext('info', {name: 'alice'});
lc.info('hello'); // prints "name=alice hello"
const lc3 = lc2.withContext('bbb');
lc3.info('hello'); // prints "name=alice bbb hello"
const lc4 = lc3.withContext('ccc');
lc4.info('hello'); // prints "name=alice bbb ccc hello"
const lc5 = lc4.withContext('ddd', 'eee');
lc5.info('hello'); // prints "name=alice bbb ccc ddd=eee hello"
// Or get a context logger appropriate for the Node environment.
const nlc = newNodeLogContext('debug');
nlc.info('fff'); // prints "INF fff"
interface OptionalLogger { ... }
This interface is used to provide conditional logging. It is intended to be used
with conditional method calling ?.()
.
import {ConsoleLogger, type OptionalLogger} from '@rocicorp/logger';
const l: OptionalLogger = new ConsoleLogger('info');
l.info?.('hello'); // prints "hello"
l.debug?.('hello'); // does not print anything
But more importantly it does not evaluate the arguments.
import {ConsoleLogger, type OptionalLogger} from '@rocicorp/logger';
const alwaysThrows = () => {
throw new Error();
};
const l: OptionalLogger = new ConsoleLogger('info');
l.debug?.(alwaysThrows()); // does not print anything, but does not throw
LogSink
There is also the LogSink
interface which is very minimal. Its intended use is
for custom log implementations.
class ExampleLogSink implements LogSink {
log(level: LogLevel, ...args: unknown[]): void {
//...
}
}
You can get an OptionalLogger
from a LogSink
using OptionalLoggerImpl
.
import {
OptionalLoggerImpl,
type LogSink,
type OptionalLogger,
} from '@rocicorp/logger';
const logSink: LogSink = new ExampleLogSink();
const l: OptionalLogger = new OptionalLoggerImpl(logSink);
FAQs
Logging utilities
The npm package @rocicorp/logger receives a total of 174 weekly downloads. As such, @rocicorp/logger popularity was classified as not popular.
We found that @rocicorp/logger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.